package com.quartet.modules.statistics.controller;


import com.quartet.api.ApiResult;
import com.quartet.modules.alarm.service.TTerminalAlarmInfoService;
import com.quartet.modules.platform.dto.vo.StatisticsAlarmTypeGroupDataVo;
import com.quartet.modules.statistics.dto.AlarmStatisticsRequestDto;
import com.quartet.modules.statistics.dto.AlarmStatisticsResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 报警统计信息表
 *
 * @author makejava
 * @since 2021-06-20 18:55:07
 */
@RestController
@RequestMapping("tAlarmStatistics")
@Slf4j
@Api(tags = "业务：报警统计")
public class TAlarmStatisticsController {

    /**
     * 服务对象
     */
    @Resource
    private TTerminalAlarmInfoService tTerminalAlarmInfoService;

    /**
     * 全量按时间分组查询报警统计信息
     *
     * @return 查询结果
     */
    @ApiOperation("按时间分组查询报警统计信息")
    @PostMapping("/queryAlarmStatisticsData")
//    @AuthKeyValidated(value = "statisticalAnalysis")
    public ApiResult<List<AlarmStatisticsResponseDto>> queryServiceStatisticsData(@RequestBody AlarmStatisticsRequestDto alarmStatisticsRequestDto) {
        List<AlarmStatisticsResponseDto> alarmStatisticsResponseDtoList = tTerminalAlarmInfoService.queryAlarmStatisticsData(alarmStatisticsRequestDto);
        return ApiResult.ok(alarmStatisticsResponseDtoList);
    }

//    /**
//     * 分页查询报警统计信息
//     *
//     * @return 查询结果
//     */
//    @ApiOperation("分页查询报警统计信息")
//    @PostMapping("/queryAlarmStatisticsList")
//    @AuthKeyValidated(value = "statisticalAnalysis")
//    public ApiResult<PageResult<TTerminalRealAlarmInfoResponseDto>> queryServiceStatisticsList(@RequestBody AlarmStatisticsRequestDto alarmStatisticsRequestDto) {
//        PageResult<TTerminalRealAlarmInfoResponseDto> pageResult = tTerminalAlarmInfoService.queryAlarmStatisticsList(alarmStatisticsRequestDto);
//        return ApiResult.ok(pageResult);
//    }

    /**
     * 高度关注按时间分组查询报警统计信息
     *
     * @return 查询结果
     */
    @ApiOperation("高度关注按时间分组查询报警统计信息")
    @PostMapping("/queryAlarmStatisticsFollowData")
//    @AuthKeyValidated(value = "statisticalAnalysis")
    public ApiResult<Map<String,List<AlarmStatisticsResponseDto>>> queryAlarmStatisticsFollowData(@RequestBody AlarmStatisticsRequestDto alarmStatisticsRequestDto) {
        Map<String,List<AlarmStatisticsResponseDto>> map = tTerminalAlarmInfoService.queryAlarmStatisticsFollowData(alarmStatisticsRequestDto);
        return ApiResult.ok(map);
    }


    /**
     * 统计各种报警类型的数量
     *
     * @return 查询结果
     */
    @ApiOperation("统计各种报警类型的数量")
    @PostMapping("/queryAlarmStatisticsGroupType")
//    @AuthKeyValidated(value = "statisticalAnalysis")
    public ApiResult<StatisticsAlarmTypeGroupDataVo> queryAlarmStatisticsGroupType(@RequestBody AlarmStatisticsRequestDto alarmStatisticsRequestDto) {
        StatisticsAlarmTypeGroupDataVo statisticsAlarmTypeGroupDataVo = tTerminalAlarmInfoService.queryAlarmStatisticsGroupType(alarmStatisticsRequestDto);
        return ApiResult.ok(statisticsAlarmTypeGroupDataVo);
    }

//    /**
//     * 根据客户和应用类型以及时间区间统计最近3、7、30、自定义时间的报警类型折线图
//     *
//     * @return 查询结果
//     */
//    @ApiOperation("根据客户和应用类型以及时间区间统计最近3、7、30、自定义时间的报警类型折线图")
//    @PostMapping("/queryAlarmStatisticsChartGroupTime")
//    public ApiResult<Map<String, List<AlarmStatisticsResponseDto>>> queryAlarmStatisticsChartGroupTime(@RequestBody AlarmStatisticsRequestDto alarmStatisticsRequestDto) {
//        Map<String, List<AlarmStatisticsResponseDto>> map = tTerminalAlarmInfoService.queryAlarmStatisticsChartGroupTime(alarmStatisticsRequestDto);
//        return ApiResult.ok(map);
//    }
}
